export default function loadMongolineHiight() {
  let obj = {
    // Set defaultToken to invalid to see what you do not tokenize yet
    // defaultToken: 'invalid',

    keywords: [
      "db",
      "aggregate",
      "bulkWrite",
      "copyTo",
      "count",
      "countDocuments",
      "estimatedDocumentCount",
      "createIndex",
      "createIndexes",
      "dataSize",
      "deleteOne",
      "deleteMany",
      "distinct",
      "drop",
      "dropIndex",
      "dropIndexes",
      "ensureIndex",
      "explain",
      "find",
      "findAndModify",
      "findOne",
      "findOneAndDelete",
      "findOneAndReplace",
      "findOneAndUpdate",
      "getIndexes",
      "getShardDistribution",
      "getShardVersion",
      "group",
      "insert",
      "insertOne",
      "insertMany",
      "isCapped",
      "latencyStats",
      "mapReduce",
      "reIndex",
      "remove",
      "renameCollection",
      "replaceOne",
      "save",
      "stats",
      "storageSize",
      "totalIndexSize",
      "totalSize",
      "update",
      "updateOne",
      "updateMany",
      "watch",
      "validate",
      "addOption",
      "batchSize",
      "close",
      "isClosed",
      "collation",
      "comment",
      "count",
      "explain",
      "forEach",
      "hasNext",
      "hint",
      "isExhausted",
      "itcount",
      "limit",
      "map",
      "max",
      "maxScan",
      "maxTimeMS",
      "min",
      "noCursorTimeout",
      "objsLeftInBatch",
      "pretty",
      "readConcern",
      "readPref",
      "returnKey",
      "showRecordId",
      "size",
      "skip",
      "sort",
      "tailable",
      "toArray",
      "adminCommand",
      "aggregate",
      "cloneCollection",
      "cloneDatabase",
      "commandHelp",
      "copyDatabase",
      "createCollection",
      "createView",
      "currentOp",
      "dropDatabase",
      "eval",
      "fsyncLock",
      "fsyncUnlock",
      "getCollection",
      "getCollectionInfos",
      "getCollectionNames",
      "getLastError",
      "getLastErrorObj",
      "getLogComponents",
      "getMongo",
      "getName",
      "getPrevError",
      "getProfilingLevel",
      "getProfilingStatus",
      "getReplicationInfo",
      "getSiblingDB",
      "help",
      "hostInfo",
      "isMaster",
      "killOp",
      "listCommands",
      "logout",
      "printCollectionStats",
      "printReplicationInfo",
      "printShardingStatus",
      "printSlaveReplicationInfo",
      "repairDatabase",
      "resetError",
      "runCommand",
      "serverBuildInfo",
      "serverCmdLineOpts",
      "serverStatus",
      "setLogLevel",
      "setProfilingLevel",
      "shutdownServer",
      "stats",
      "version",
      "watch",
      "getPlanCache",
      "clear",
      "clearPlansByQuery",
      "getPlansByQuery",
      "help",
      "listQueryShapes",
      "initializeOrderedBulkOp",
      "initializeUnorderedBulkOp",
      "Bulk",
      "execute",
      "find",
      "arrayFilters",
      "collation",
      "remove",
      "removeOne",
      "replaceOne",
      "updateOne",
      "update",
      "upsert",
      "getOperations",
      "insert",
      "tojson",
      "toString",
      "auth",
      "changeUserPassword",
      "createUser",
      "dropUser",
      "dropAllUsers",
      "getUser",
      "getUsers",
      "grantRolesToUser",
      "removeUser",
      "revokeRolesFromUser",
      "updateUser",
      "createRole",
      "dropRole",
      "dropAllRoles",
      "getRole",
      "getRoles",
      "grantPrivilegesToRole",
      "revokePrivilegesFromRole",
      "grantRolesToRole",
      "revokeRolesFromRole",
      "updateRole",
      "add",
      "addArb",
      "conf",
      "freeze",
      "help",
      "initiate",
      "printReplicationInfo",
      "printSlaveReplicationInfo",
      "reconfig",
      "remove",
      "slaveOk",
      "status",
      "stepDown",
      "syncFrom",
      "addShard",
      "addShardTag",
      "addTagRange",
      "disableBalancing",
      "enableBalancing",
      "disableAutoSplit",
      "enableAutoSplit",
      "enableSharding",
      "getBalancerHost",
      "getBalancerState",
      "removeTagRange",
      "removeRangeFromZone",
      "help",
      "isBalancerRunning",
      "moveChunk",
      "removeShardTag",
      "removeShardFromZone",
      "setBalancerState",
      "shardCollection",
      "splitAt",
      "splitFind",
      "startBalancer",
      "status",
      "stopBalancer",
      "waitForBalancer",
      "waitForBalancerOff",
      "waitForPingChange",
      "updateZoneKeyRange",
      "txt",
      "enableFreeMonitoring",
      "disableFreeMonitoring",
      "getFreeMonitoringStatus",
      "BulkWriteResult",
      "Date",
      "ObjectId",
      "getTimestamp",
      "toString",
      "valueOf",
      "UUID",
      "WriteResult",
      "hasWriteError",
      "hasWriteConcernError",
      "connect",
      "Mongo",
      "getDB",
      "getReadPrefMode",
      "getReadPrefTagSet",
      "isCausalConsistency",
      "setCausalConsistency",
      "setReadPref",
      "setSlaveOk",
      "startSession",
      "watch",
      "cat",
      "cd",
      "copyDbpath",
      "fuzzFile",
      "getHostName",
      "getMemInfo",
      "hostname",
      "listFiles",
      "ls",
      "md5sumFile",
      "mkdir",
      "pwd",
      "quit",
      "removeFile",
      "resetDbpath",
      "sleep",
      "setVerboseShell",
      "version",
      "_isWindows",
      "_rand",
      "_srand",
      "aggregate",
      "count",
      "distinct",
      "group",
      "mapReduce",
      "geoNear",
      "geoSearch",
      "delete",
      "eval",
      "find",
      "findAndModify",
      "getLastError",
      "getMore",
      "getPrevError",
      "insert",
      "parallelCollectionScan",
      "resetError",
      "update",
      "planCacheClear",
      "planCacheClearFilters",
      "planCacheListFilters",
      "planCacheListPlans",
      "planCacheListQueryShapes",
      "planCacheSetFilter",
      "authenticate",
      "getnonce",
      "logout",
      "dropAllUsersFromDatabase",
      "dropUser",
      "grantRolesToUser",
      "revokeRolesFromUser",
      "updateUser",
      "usersInfo",
      "createRole",
      "dropRole",
      "dropAllRolesFromDatabase",
      "grantPrivilegesToRole",
      "grantRolesToRole",
      "invalidateUserCache",
      "revokePrivilegesFromRole",
      "revokeRolesFromRole",
      "updateRole",
      "applyOps",
      "isMaster",
      "replSetAbortPrimaryCatchUp",
      "replSetFreeze",
      "replSetGetConfig",
      "replSetGetStatus",
      "replSetInitiate",
      "replSetMaintenance",
      "replSetReconfig",
      "replSetResizeOplog",
      "replSetStepDown",
      "replSetSyncFrom",
      "addShard",
      "addShardToZone",
      "balancerStart",
      "balancerStatus",
      "balancerStop",
      "checkShardingIndex",
      "cleanupOrphaned",
      "enableSharding",
      "flushRouterConfig",
      "getShardMap",
      "getShardVersion",
      "isdbgrid",
      "listShards",
      "medianKey",
      "moveChunk",
      "movePrimary",
      "mergeChunks",
      "removeShard",
      "removeShardFromZone",
      "setShardVersion",
      "shardCollection",
      "shardingState",
      "split",
      "splitChunk",
      "splitVector",
      "unsetSharding",
      "updateZoneKeyRange",
      "abortTransaction",
      "commitTransaction",
      "endSessions",
      "killAllSessions",
      "killAllSessionsByPattern",
      "killSessions",
      "refreshSessions",
      "startSession",
      "clean",
      "clone",
      "cloneCollection",
      "cloneCollectionAsCapped",
      "collMod",
      "compact",
      "connPoolSync",
      "convertToCapped",
      "copydb",
      "create",
      "createIndexes",
      "currentOp",
      "drop",
      "dropDatabase",
      "dropIndexes",
      "filemd5",
      "fsync",
      "fsyncUnlock",
      "getParameter",
      "killCursors",
      "killOp",
      "listCollections",
      "listDatabases",
      "listIndexes",
      "logRotate",
      "reIndex",
      "renameCollection",
      "repairDatabase",
      "setFeatureCompatibilityVersion",
      "setParameter",
      "shutdown",
      "touch",
      "availableQueryOptions",
      "buildInfo",
      "collStats",
      "connPoolStats",
      "connectionStatus",
      "cursorInfo",
      "dataSize",
      "dbHash",
      "dbStats",
      "diagLogging",
      "driverOIDTest",
      "explain",
      "features",
      "getCmdLineOpts",
      "getLog",
      "hostInfo",
      "isSelf",
      "listCommands",
      "ping",
      "profile",
      "serverStatus",
      "shardConnPoolStats",
      "top",
      "validate",
      "whatsmyuri",
      "setFreeMonitoring",
      "logApplicationMessage"
    ],

    typeKeywords: [
      "boolean",
      "double",
      "byte",
      "int",
      "short",
      "char",
      "void",
      "long",
      "float"
    ],

    operators: [
      "=",
      ">",
      "<",
      "!",
      "~",
      "?",
      ":",
      "==",
      "<=",
      ">=",
      "!=",
      "&&",
      "||",
      "++",
      "--",
      "+",
      "-",
      "*",
      "/",
      "&",
      "|",
      "^",
      "%",
      "<<",
      ">>",
      ">>>",
      "+=",
      "-=",
      "*=",
      "/=",
      "&=",
      "|=",
      "^=",
      "%=",
      "<<=",
      ">>=",
      ">>>="
    ],

    // we include these common regular expressions
    symbols: /[=><!~?:&|+\-*\/\^%]+/,

    // C# style strings
    escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,

    // The main tokenizer for our languages
    tokenizer: {
      root: [
        // identifiers and keywords
        [
          /[a-z_$][\w$]*/,
          {
            cases: {
              "@typeKeywords": "keyword",
              "@keywords": "keyword",
              "@default": "identifier"
            }
          }
        ],
        [/[A-Z][\w\$]*/, "type.identifier"], // to show class names nicely

        // whitespace
        {
          include: "@whitespace"
        },

        // delimiters and operators
        [/[{}()\[\]]/, "@brackets"],
        [/[<>](?!@symbols)/, "@brackets"],
        [
          /@symbols/,
          {
            cases: {
              "@operators": "operator",
              "@default": ""
            }
          }
        ],

        // @ annotations.
        // As an example, we emit a debugging log message on these tokens.
        // Note: message are supressed during the first load -- change some lines to see them.
        [
          /@\s*[a-zA-Z_\$][\w\$]*/,
          {
            token: "annotation",
            log: "annotation token: $0"
          }
        ],

        // numbers
        [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
        [/0[xX][0-9a-fA-F]+/, "number.hex"],
        [/\d+/, "number"],

        // delimiter: after number because of .\d floats
        [/[;,.]/, "delimiter"],

        // strings
        [/"([^"\\]|\\.)*$/, "string.invalid"], // non-teminated string
        [/"/, {
          token: "string.quote",
          bracket: "@open",
          next: "@string"
        }],

        // characters
        [/'[^\\']'/, "string"],
        [/(')(@escapes)(')/, ["string", "string.escape", "string"]],
        [/'/, "string.invalid"]
      ],

      comment: [
        [/[^\/*]+/, "comment"],
        [/\/\*/, "comment", "@push"], // nested comment
        ["\\*/", "comment", "@pop"],
        [/[\/*]/, "comment"]
      ],

      string: [
        [/[^\\"]+/, "string"],
        [/@escapes/, "string.escape"],
        [/\\./, "string.escape.invalid"],
        [/"/, {
          token: "string.quote",
          bracket: "@close",
          next: "@pop"
        }]
      ],

      whitespace: [
        [/[ \t\r\n]+/, "white"],
        [/\/\*/, "comment", "@comment"],
        [/\/\/.*$/, "comment"]
      ]
    }
  };


  return obj

}